Software piracy is rapidly becoming a major problem in data processing and particularly in the personal computer field. Software development for microcomputers, for example, is expensive and time consuming. It is therefore important to the software developer that each authorized user pay for the programs used and not reproduce the programs to be used by others or at other sites. Software piracy is, in practice, difficult to prevent because it is generally easy for users to make multiple copies of the programs for unauthorized users, and easy for competitors to repackage and distribute valuable programs at a fraction of the cost to the original developer. The problem is aggravated by the existence of microcomputers which are becoming widespread.
A number of different types of encryption methods have been provided to attempt to eliminate software piracy. One method involves providing a ROM containing an identification number that is duplicated on a floppy disc containing a program to be executed. The program periodically checks for the presence of the identification ROM. If the identification ROM is not connected in the system during execution of the program, the program crashes.
In a related method, a hardware module or "black box" is connected in a personal computer. Each piece of software is supplied with a magnetic key that physically plugs into the module and contains a coded identification number that matches the identification number on the software. To decode the stored program, the key must be plugged into the module.
In another method, a ROM produces a sequence of executable codes in the normal manner but prohibits the user from randomly accessing the memory addresses. A secret executive routine, built into the ROM, contains a table of the legal next steps for every given step in the program. Only those steps listed in the table can be accessed by the user. Thus, if a program contains a branch to one of two places, only those two places can be examined by the programmer at that time. If a program contains enough branches, it will be virtually impossible for the user to run through every permutation of the program to obtain a complete listing of the code.
Another prior art encryption method is monoalphabetic substitution, wherein each byte of a program is replaced with a substitute byte. Each byte of the enciphered program is deciphered when needed by simple table look-up using a small substitution table that is part of the circuitry on the microprocessor chip.
In some methods, the format of the data on the storage disc is altered by changing data locations. This makes it impossible, however, for authorized users to make backup copies.
All of the software protection systems of which I am aware are either not sufficiently secure against cryptanalyst attack, require too much space on the microprocessor chip or are too slow. Further, hardware based systems for software protections of which I am aware require a separate hardware module for each software package that, of course, substantially increases costs and decreases versatility.
Accordingly, one object of the invention is to provide a new and improved method of and apparatus for protecting software against unauthorized use.
Another object is to deter users of microprocessor programs from executing the programs in unauthorized computers.
Another object is to provide software protection that is fast and occupies minimum chip area.
Another object is to provide software protection that is substantially secure against software piracy without significantly adding to software costs.
Another object is to provide a software protection system wherein authorized users are able to make backup copies which are secure from use in unauthorized sites.